Adaptive material deposition in three-dimensional fabrication

ABSTRACT

The subject disclosure is directed towards adapting a three-dimensional model to surface geometry when fabricating a three-dimensional object. While partitioning model data into planar regions and non-planar regions of the three-dimensional object, the model data associated with the non-planar regions is modified to more accurately generate a path that follows the object&#39;s curved surface geometry. This path is transformed into an instruction set, which when executed by a device, causes movement along the path while depositing material on the three-dimensional object.

BACKGROUND

A variety of three-dimensional fabrication techniques have been devised to support rapid prototyping from computer models. There are a number of devices capable of fabricating a three-dimensional (3D) solid object of virtually any shape from a digital model. These devices may be referred to as three-dimensional (3D) manufacturing or fabrication devices, such as three-dimensional (3D) printers, Computer Numerical Control (CNC) milling machines, and/or the like.

Conventional fabrication technologies, such as Fused Filament Fabrication and Fused Deposition Modeling, build models one layer at a time, which can result in visible errors. One example error may be referred to as “stair-stepping” or visible striping for surfaces that are close to flat and for walls closer to vertical. In order to mitigate this and other errors, these technologies employ thinner layers. Using thinner layers, however, significantly increases model build time. Another solution, which only works for a limited number of materials, involves post-processing with chemical vapors (e.g., Acetone) to melt and smooth the visible surface.

SUMMARY

This Summary is provided to introduce a selection of representative concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used in any way that would limit the scope of the claimed subject matter.

Briefly, various aspects of the subject matter described herein are directed towards adaptive material deposition approaches to improving surface quality during three-dimensional object fabrication. These approaches may be implemented in a fabrication manager, which is configured to generate instructions for fabricating the object in layers. The fabrication manager detects surface geometries that define at least some curvature (e.g., non-planar in the horizontal direction and/or in the vertical direction). The fabrication manager computes a three-dimensional path for finishing such curved surface geometries in addition to the two-dimensional layer fabrication of the object's interior. According to one aspect, removing non-planar regions under the surface of the layer provides enough space for an accurate finishing pass of material. Three-dimensional tool head movements are computed such that material is deposited before a higher layer is built.

In one aspect, the object's model data is modified before being prepared for such fabrication. Prior to being portioned into layers alone a z-dimension, non-planar regions are removed from the model data. Those regions are partitioned into layers along another dimension. Instructions for the fabrication device are generated for the non-planar regions and combined with instructions with other regions of the model data. In another aspect, the object's model data is partitioned into layers along any direction in addition to or instead of the z-dimension. Instructions for depositing material along these layers may follow a three-dimensional path.

Other advantages may become apparent from the following detailed description when taken in conjunction with the drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example and not limited in the accompanying figures in which like reference numerals indicate similar elements and in which:

FIG. 1 is a block diagram illustrating an example system for adapting a model to a surface geometry according to at least one example implementation.

FIG. 2 is a flow diagram illustrating example steps for adapting a model to a surface geometry according to at least one example implementation.

FIG. 3 is a flow diagram illustrating example steps for modulating a layer height when fabricating a three-dimensional object according to at least one example implementation.

FIG. 4 is a flow diagram illustrating example steps for applying texture to an object surface according to at least one example implementation.

FIG. 5 is a flow diagram illustrating example steps for modifying a three-dimensional model to generate three-dimensional instructions for non-planar regions according to at least one example implementation.

FIG. 6A and FIG. 6B represent example three-dimensional objects in which tool paths are generated across an x-direction and a y-direction, respectively, according to at least one example implementation.

FIG. 7 illustrates an example cross-section of a three-dimensional model that comprises non-planar regions and planar regions according to at least one example implementation.

FIG. 8 illustrates an example cross-section of a three-dimensional model in which non-planar regions are removed according to at least one example implementation.

FIG. 9 illustrates a portion of an example cross-section of a three-dimensional model in which non-planar regions are rotated according to at least one example implementation.

FIG. 10 illustrates an adaptive layer height approach for an example three-dimensional model comprising non-planar regions according to at least one example implementation.

FIG. 11A and FIG. 11B illustrate example layers undergoing extrusion modulation according to at least one example implementation.

FIG. 12 illustrates example texture for a surface geometry according to at least one example implementation.

FIG. 13 illustrates an adaptive material width approach on a three-dimensional object according to at least one example implementation.

FIG. 14 illustrates another example adaptive material width approach on a three-dimensional object according to at least one example implementation.

FIG. 15 is a block diagram representing example non-limiting networked environments in which various embodiments described herein can be implemented.

FIG. 16 is a block diagram representing an example non-limiting computing system or operating environment in which one or more aspects of various embodiments described herein can be implemented.

DETAILED DESCRIPTION

Various aspects of the technology described herein are generally directed towards configuring a fabrication device with adaptive material deposition mechanisms. Employing at least some of these mechanisms may result in improved surface quality and/or reduced/eliminated visible errors (e.g., stair-stepping errors). According to one example implementation, the fabrication device includes an extruder apparatus that extrudes plastic filament material while moving in any direction. One or more components of the fabrication device may generate instructions directing the extruder apparatus along a path corresponding to a surface curvature of a three-dimensional object. Hence, the extruder apparatus may be configured to deposit the material along a curve in the x, y and/or z dimensions. Adapting the extruder apparatus to enable movement along the curve may involve adjusting one or more layer characteristics.

Each layer having at least a portion of the curve may be transformed into a layer along another dimension such that the set of paths generated for the non-planar region more accurately follow the curved surface geometry of the object. The fabrication device may modify a layer height for some layers such that thinner layers are used for curved surface geometry. In some example implementations, the fabrication device may modify a layer height for one or more sub-layers within a layer. These sub-layers may partition the layer along an x-dimension or a y-dimension. The fabrication device may generate instructions, which when executed, cause the extruder apparatus to modulate plastic material extrusion to create texture patterns on the object's surface.

It should be understood that any of the examples herein are non-limiting. As such, the present invention is not limited to any particular embodiments, aspects, concepts, structures, functionalities or examples described herein. Rather, any of the embodiments, aspects, concepts, structures, functionalities or examples described herein are non-limiting, and the present invention may be used various ways that provide benefits and advantages in computing and fabrication technologies in general.

FIG. 1 is a block diagram illustrating an example system for adapting a model to a surface geometry according to at least one example implementation. The following description refers to components that may be implemented in the example apparatus depicted in FIG. 1. Embodiments of these components may be considered hardware, software and/or mechanical in nature. It is appreciated that the example apparatus may be referred to as a fabrication device 102.

One example component of the fabrication device 102 includes a control unit or controller 104 coupled to one or more robotic mechanisms, such as a robot 106, and configured to execute instructions for the robot 106 and a printing mechanism 108. Some fabrication devices translate geometric figures/polygons in the model into machine instructions (e.g., GCode) configured to generate an actual output for each layer. The printing mechanism 108 may include one or more tools for depositing material. A chamber 110 constructed within the printing mechanism 108 allows source material(s) to be prepared (e.g., heated) and/or blended when fabricating an object 112. For example, the chamber 110 enables melting, mixing, and extruding of one or more filaments, including color filaments.

The robot 106, such as a gantry, may include an assembly of various mechanical and/or electro-mechanical components. By executing at least some instructions within an instruction set 114, the robot 106 may actuate these components into performing at least some physical movement. When actuated, for example, these components may move horizontally, vertically, diagonally, rotationally and so forth. One example implementation of the robot 106 moves a printing tool head across an x, y and/or z-axis in order to deposit material at a specific position on the object 112 being fabricated. That position may correspond to a portion of surface geometry (e.g., a perimeter region, a curved bottom geometry, a top surface geometry), interior or in-fill area, a support structure and/or the like. An alternative implementation of the robot 106 rotates the printing tool head along one or more additional degrees of freedom to augment the movement along the x, y and/or z-axis.

The printing mechanism 108 may include to one or more printing tool heads. Although the printing mechanism 108 may resemble an extruder configuration (e.g., a single extruder head configuration), it is appreciated that the printing mechanism 108 represents any compatible technology, including legacy printing tool heads. Furthermore, the printing mechanism 108 may include printing tool heads configured to deposit other materials in addition to colored materials and/or transparent materials. As such, the printing mechanism 108 may include a second chamber and a second nozzle that provides another material (e.g., a polymer) when printing certain structures during fabrication, such as support structures, purge structures and/or the like. Purge structures may refer to areas of the object's model where unusable material is deposited. As one example, leftover material in the chamber 110 may be deposited in the purge structure.

Adapting material deposition to the surface geometry of the object 112 involves a fabrication manager 116 configured to modify model data 118 based upon that surface geometry's curvature according to one or more example implementations. The fabrication manager 116 may be configured to generate instructions, which when executed by the controller 104, causes the deposition of material along sets of paths corresponding to the surface geometry. Each set of paths may be defined along different dimensions or directions. For example, one set of paths may be in the y-dimension or parallel to a y-axis; alternatively, another set of paths may be in the x-dimension or parallel to an x-axis. Each path represents a movement (e.g., three-dimensional movement) for the printing mechanism 108 to perform while depositing material.

In one example implementation, the fabrication manager 116 partitions the model data 118 such that the object model is separated into layers in which each layer represents a three-dimensional space along an axis, such as a z-axis. Based upon the model data 118 corresponding to at least one layer, the partition manager 116 examines the surface geometry of the object 112 based upon curvature and identifies one or more portions of curved surface geometry. One example of curved surface geometry includes an example region of the object 112 where the surface geometry is nearly flat or non-planar. It is appreciated that the present description may refer to the example region as a non-planar region and other regions of the object 112 that are not associated with the curved surface geometry may be referred to as planar regions. The fabrication manager 116 may identify a set of paths for each non-planar region in which each path corresponds to three-dimensional positions within the non-planar region for depositing material. The example implementation described above involves the z-axis to illustrate object model modification in retrofitted embodiments, such as those employing conventional three-dimensional fabrication components. It is appreciated that the object model may be partitioned along a different dimension, such as a y-axis or an x-axis, in other example implementations. Regardless of the dimension, the fabrication manager 116 determines paths corresponding to the non-planar regions along at least two dimensions.

The deposition process described herein may be modulated in a number of ways. In one example implementation, the fabrication manager 116 modifies layer height when fabricating one or more layers of the model data 118. Each layer having at least a portion of a non-planar region may be transformed into a layer of reduced height such that the set of paths generated for the non-planar region more accurately follow the curved surface geometry of the object 112. Some layers may be transformed into layers of different heights to account for steeper angles of inclinations or declinations in the non-planar region's curvature.

Alternatively, only a portion of the layer actually including the non-planar region may be reduced in layer height; remaining portions of the layer retain an original layer height. According to another implementation, the fabrication manager 116 modifies extrusion material thickness in order to deposit different amounts of material in different locations. According to yet another example implementation, the fabrication manager 116 modifies extrusion material width and/or height in order to produce texture on the curved surface geometry. Texture information 120 may store extrusion material thickness values that enable the fabrication manager to compute a material height and/or a material width for extruding material on the object surface perimeter or top, which may be used to produce rough and/or smooth surface textures.

One example implementation of an adaptive material thickness approach uses a lower layer height for at least a portion of a layer and a full layer height in other portions. According to this implementation, the fabrication device extrudes lines of material at a variable thickness. Under this approach, vertical outside walls may be extruded at a full layer height (e.g., as 0.3 mm) such that thinner layers may be used for non-planar surface perimeters, a non-planar surface top, or, alternately, a curved exterior and/or a curved bottom.

Another example implementation of an adaptive layer height approach modifies a layer height for an entire layer. For example, if a layer (or a sub-layer) appears to be a substantially vertical wall, material is extruded for that layer at a full layer height. When a layer intersects a section of the model with more gradual slopes, the layer height may be progressively reduced for one or more higher layers to improve surface quality.

One example implementation of an extrusion modulation approach extrudes lines of material at a variable width. For example, while a standard extruded line of plastic material may be 0.4 mm in width and 0.2 mm in height, this approach modulates the width of this line in order to produce visible texture patterns on the outer surfaces of the printed model. An alternative approach may modulate the material height by moving an extruder apparatus vertically while extruding material.

The fabrication manager 116 may employ a number of approaches to locate regions of a surface perimeter having at least a certain degree of curvature. According to one example implementation, the fabrication manager 116 processes a polygon mesh model and identifies polygons that are on the top of the finished object and have a slope below a defined threshold (e.g., less than thirty (30) degrees from being flat). The fabrication manager reduces such a polygon by a thickness of the finishing non-planar material deposition passes (e.g., 2-3 layers) and adds this polygon to the list of polygons that will undergo non-planar passes. Hence, the new modified model with these reduced polygons may be used by the fabrication manager 116 for creating the normal planar layers. Afterwards, the fabrication manager 116 inserts the non-planer passes between planar layers based on the maximum height of the original polygons in the non-planar region.

FIG. 2 is a flow diagram illustrating example steps for adapting a model to a surface geometry according to at least one example implementation. One or more hardware/software components (e.g., a fabrication manager 116 of FIG. 1) may be configured to perform the example steps. Step 202 commences the example steps and proceeds to step 204 where model data for a three-dimensional object is partitioned into non-planar regions and planar regions based upon the surface geometry. The non-planar regions may form a curved surface perimeter for the three-dimensional object.

Step 206 is directed towards modifying the model data that corresponds to the non-planar regions. This may be accomplished by translating a surface geometry, including the non-planar regions, into a desired perspective in three-dimensional space prior to generating instructions for the non-planar regions. Step 208 refers to generating instructions for the non-planar regions. As an alternative mechanism, step 206 may involve translating the instructions for the non-planar regions into the desired perspective by modulating material deposition by changing layer height and/or material width. Adjusting an extrusion feed rate and/or speed may result in variations of the material width. Changing the layer height may effectuated by modifying an extrusion material thickness for entire layer or a portion thereof. Some example material deposition modulation implementations produce texture on the three-dimensional object surface.

According to one example implementation, a path forming a curved surface geometry around one or more non-planar regions represents three-dimensional movement for an extruder apparatus. When executed, the above mentioned instructions may cause actuation of an extruder nozzle to a particular coordinate position in three-dimensional space and further cause application of (e.g., filament) material at that position and other positions along the path. The path may be partitioned into layers along the z-dimension and for each layer, instructions may be generated causing the extruder apparatus to deposit material along one or more portions (e.g., sub-layers) of that layer. The layer's height may be adapted locally and/or for the entire layer based upon a curvature of the non-planar regions.

Step 210 refers to generating instructions for the planar regions. Because the planar regions include interior in-fill areas, any path generated for these regions may include two-dimensional movement within a layer and at a full layer height. Step 212 is directed towards combining the instructions for the non-planar regions and the instructions for the planar regions into an instruction set configured to fabricate the three-dimensional object. Step 214 terminates the example steps of FIG. 2.

FIG. 3 is a flow diagram illustrating example steps for modulating material extrusion when fabricating a three-dimensional object according to at least one example implementation. One or more hardware/software components (e.g., a fabrication manager 116 of FIG. 1) of a device (e.g., a fabrication device, such as the fabrication device 102 of FIG. 1) may be configured to perform the example steps. Step 302 commences the example steps and proceeds to step 304 where a layer of model data for the three-dimensional object is selected. As described herein, the model data defines regions (e.g., geometric polygons) of the three-dimensional object to facilitate manufacturing of that object. Step 304 also is directed to generating instructions for fabricating the layer, which when executed on the device, cause components of the device to deposit material along contours and interior areas of the layer.

Step 306 begins or continues a material deposition process on the three-dimensional object. As described herein, one example material deposition process involves plastic material extrusion through a nozzle one layer at a time. Although the following description refers an example layer as a horizontal layer across x and y dimensions, as an alternative, an example layer may be a vertical layer across the x and z dimensions or the y and z dimensions.

Step 308 determines whether adapting the material deposition process results in improved surface quality of the three-dimensional object. If step 308 decides to adapt the material deposition process based upon a surface geometry, step 308 returns to step 306 with one or more modified material deposition parameters, such as a modified layer height, a modified sub-layer height, or a modified material width. If, at step 308, it is determined that adapting the material deposition most likely will not improve surface quality, step 308 proceeds to step 310. Step 310 is directed to stopping fabrication of the layer when the layer is fully fabricated. Step 312 determines whether there are more layers in the three-dimensional model to fabricate. If there are additional layers in the model, step 312 returns to step 304 in order to generate instructions for fabricating a next layer based upon the modified material deposition parameters. Accordingly, step 306 proceeds to deposit the material as directed by the above mentioned instructions. If not, step 312 proceeds to step 314, which terminates the example steps of FIG. 3.

FIG. 4 is a flow diagram illustrating example steps for applying texture to an object surface according to at least one example implementation. One or more hardware/software components of a device (e.g., a fabrication device, such as the fabrication device 102 of FIG. 1) may be configured to perform the example steps. Step 402 commences the example steps and proceeds to step 404 where texture information is accessed. Step 406 refers to access model data associated with a surface geometry. As described herein, the model data defines regions of a three-dimensional object, including planar and/or non-planar regions corresponding to the surface geometry. The model data may be modified according to any texture pattern, including coarse and/or smooth textures, wood grain textures, concrete textures, characters/words and/or the like. Hence, texture can be produced on the surface geometry that is either curved, flat or a combination of both, curved and flat. This may be accomplished using an extruder apparatus configured to deposit heated plastic material on the three-dimensional object.

The texture information defines data corresponding to at least one texture pattern, which is a pattern for depositing material on the three-dimensional object surface. Step 408 is directed to mapping a texture pattern to the surface geometry. One example texture pattern is illustrated by FIG. 12. Step 410 determines whether to modify the model data based upon the mapping between the texture pattern and the surface geometry. If the model data is to be modified, such as by modifying material width, step 410 proceeds to step 412 where extrusion line widths and/or heights are determined. These values may be proportional to each other such that a change in extrusion line width may affect the extrusion line height or thickness and vice versa. If, for instance, the extrusion line width increases from a minimum extrusion width beyond a certain threshold, the extrusion line height also increases proportionally. If the model data is not to be modified, step 412 proceeds to step 414. If no texture is to be applied to the surface geometry, step 410 proceeds directly to step 420.

Step 414 and step 416 compute extrusion speeds, feed rates, and lengths based upon corresponding extrusion line widths and/or heights. Extrusion speed refers to a rate at which an extruder nozzle moves down the extrusion line. Extrusion feed rate refers to an amount of material (e.g., in terms of thickness and/or width) that is expelled from the nozzle per unit of time. Changes to the extrusion line widths may affect the extrusion feed rate by increasing or decreasing an amount of material being deposited, which also causes a change to the extrusion line height. Step 414 determines an appropriate extrusion feed rate for depositing sufficient material for the extrusion line width and/or height. Extrusion length refers to a length of the extrusion line. Using these extrusion characteristics, step 418 generates instructions for producing texture on the surface geometry. As described herein, these instructions may include to GCode, which when executed, causes two-dimensional and/or three-dimensional movement along a path while depositing plastic material in a layer of the three-dimensional object's model. Step 420 terminates the example steps of FIG. 4.

FIG. 5 is a flow diagram illustrating example steps for modifying a three-dimensional model to generate three-dimensional instructions for non-planar regions according to at least one example implementation. One or more hardware/software components of a device (e.g., a fabrication device, such as the fabrication device 102 of FIG. 1) may be configured to perform the example steps. Step 502 commences the example steps and proceeds to step 504 where at least one layer in z-dimension is processed. Each layer may include non-planar regions and planar regions of the object along the z-dimension. As described herein, the three-dimensional model may define a three-dimensional object comprised of layers to facilitate manufacturing of that object. It is appreciated that some embodiments may process the model into sets of layers in which each set of layer partitions the object along a different dimension. Hence, these embodiments may process at least one layer in an x-dimension or a y-dimension at step 504.

Step 506 represents a determination as to whether there any non-planar regions in the at least one layer. In one example implementation, a fabrication manager of the device is configured to identify at least a portion of the three-dimensional object having the curved surface geometry and further partition that portion into sets of layers in which each set of layers corresponds to at least one dimension (e.g., x-dimension or z-dimension). One example set of layers partitions a volumetric cross-section into vertical or horizontal lines indicating positions where material is to be deposited. As described herein, each line may be associated with at least one length, at least one width and at least one height defining material thickness at different positions along the line. Step 508 determines whether to modulate the material deposition process when fabricating the at least one layer. If material deposition modulation is to be performed on the at least one layer, step 508 proceeds to step 510; otherwise, step 508 proceeds to step 512. Step 510 modifies one or more fabrication settings, such as a layer height (e.g., a material height) or a material width.

Step 512 to step 516 refer to modifying the three-dimensional model based upon the non-planar regions, which define the curved surface geometry. Step 512 partitions the non-planar regions into at least one set of layers in which each set of layers corresponds to a different axis. For the purposes of describing at least some representative embodiments of step 512 to step 516, it may be assumed that step 512 partitions the non-planar regions into a set of layers along the z-dimension. Step 514 rotates the set of layers of the three-dimensional model along an axis, such as an x-axis, in order to generate paths for the set of layers. Step 516 rotates another set of layers of the three-dimensional model along another axis, such as a y-axis, in order to generate paths for that set of layers. By rotating the model, the curved surface geometry may be examined in another perspective. Step 518 generates executable instructions corresponding to both sets of paths and combines those instructions with instructions for fabricating the planar regions to produce an instruction set. Step 520 terminates the example steps of FIG. 5.

FIG. 6A and FIG. 6B represent an example three-dimensional object in which tool paths are generated across a y-direction and an x-direction, respectively, according to at least one example implementation. The three-dimensional object being depicted in FIGS. 6A and 6B may be referred to as a wedge. These tools paths may be used for configuring finishing passes on the three-dimensional object's surface geometry. FIG. 6A depicts the object's surface geometry having cross-sections 602 along an x-axis. Each of the cross-sections 602 represents model data for a portion of the object having at least a minimum extrusion width and located within that cross-section's y and z dimensions. FIG. 6B depicts the object's surface geometry having cross-sections 604 across a y-axis in which each cross-section occupies x and z dimensions.

A tool path may be generated for each curved or non-planar region of a particular cross-section. The tool paths may augment other tool paths determined by conventional model slicing solutions (e.g., in a retrofitted device). Such a solution is configured to generate instructions for building up a single layer (e.g., along a z-dimension). In order to adapt that solution to performing finishing passes on the surface geometry along a y-dimension and/or an x-dimension, the model is rotated along the y-axis for one finishing pass and/or along the x-axis for another finishing pass. After being rotated along the y-axis such that the cross-section is parallel to an xy-plane, the rotated model is partitioned into layers on the x-dimension. Then, the rotated model is reverted back along the negative y-axis back to an original perspective. For the other finishing pass, after rotating the model along the y-axis, the rotated model is partitioned into layers on the y-dimension. Then, the rotated model is rotated back along the negative y-axis to an original perspective.

FIG. 7 illustrates an example cross-section of a three-dimensional model according to at least one example implementation. The example cross-section represents a three-dimensional volume along an x-z plane with a fixed or variable width (e.g., along a y-axis). According to one example implementation, the example cross-section, such as a cross-section 702, is partitioned into layers 704 _(1 . . . N) that correspond to a material deposition finishing pass along the x and z-dimensions. After identifying planar regions 706 and non-planar regions 708 of the three-dimensional object, the non-planar regions 706 are prepared for material deposition by three-dimensional or three-dimensional movement. In one example implementation, the three-dimensional model is modified, in memory, before applying normal planer slicing by lowering a top surface in the cross-section 702 by the thickness of the non-planar regions 708 (e.g., a minimum extrusion thickness).

FIG. 8 illustrates an example cross-section of a three-dimensional model in which non-planar regions are removed according to at least one example implementation. The example cross-section, such as a cross-section 802, may represent the cross-section 702 of FIG. 7 after the non-planar regions 708 are removed. A set of layers 804 _(1 . . . N), similar to the layers 704 _(1 . . . N), correspond to a z-dimension. After generating instructions for material deposition on the non-planar regions 708, as depicted by FIG. 9, instructions for planar regions 806 are generated across a z-dimension and combined with the instructions for the non-planar regions 708. In one example implementation, GCode is produced for depositing material along each of the set of layers 804 _(1 . . . N) for the non-planar regions 708 and combined with GCode for depositing material across the planar regions 806.

FIG. 9 illustrates a portion of an example cross-section of a three-dimensional model in which non-planar regions are rotated according to at least one example implementation. The example cross-section, representing a curved surface geometry 902, may comprise a portion of the cross-section 702 of FIG. 7 where the planar regions 706 are removed and only the non-planar regions 708 remain. A set of layers 904 _(1 . . . 12) corresponding to a y-dimension may partition the curved surface geometry 902 in which each layer corresponds to model data that was rotated from the x and z dimensions onto an xy-plane. The model data for the set of layers 904 _(1 . . . 12) may be transformed into coordinates (e.g., two-dimensional and/or three-dimensional coordinates) defining one or more non-planar geometries, such as a non-planar line 906 and a non-planar line 908, on the curved surface geometry 902. Based upon these coordinates, a fabrication device (e.g., the fabrication device 102 of FIG. 1) may determine printing tool head paths for depositing material on the non-planar line 906 and the non-planar line 908 along the x and y dimensions. After rotating the model data back onto an xz-plane, the fabrication device converts the coordinates for the tool head paths into coordinates along the x and z dimensions. Hence, each tool head path defines movement along the z-axis in addition to movement along the x-axis and/or y-axis.

To illustrate at least one example implementation, a tool head path defines one or more extrusion rates corresponding to one or more amounts of material being deposited at a particular three-dimensional coordinate along, for example, the non-planar line 906. When depositing material along the tool head path, the fabrication device may dynamically adjust an extruder nozzle position along a z-axis coordinate and/or an x-coordinate within the non-planar line 906, resulting in diagonal and/or curved movement of the extruder nozzle. If the tool path head defines a minimum extrusion width for the example cross-section, the non-planar line 906 may be fabricated in one three-dimensional pass. As an alternative mechanism, instructions for the tool head path may set the z-axis coordinate to that layer's height such that the tool head does not move vertically when depositing material except for when moving to a next layer.

After generating instructions for material deposition on the curved surface geometry 902, the example cross-section is rotated along a negative x-axis and these instructions are transformed into compatible instructions for layers along a z-dimension. Such a material deposition process may be referred to as a non-planar finishing pass. In one example implementation, GCode is produced for depositing material along each of the set of layers 904 _(1 . . . 12) for the one or more non-planar geometries and combined with GCode for depositing material on remaining geometries of the three-dimensional model.

FIG. 10 illustrates an adaptive layer height approach for an example three-dimensional model comprising non-planar regions according to at least one example implementation. The example three-dimensional model refers to a cross-section 1002 of an object being fabricated along x and z-dimensions. The adaptive layer height approach (e.g., as implemented by one or more hardware/software components, such as the fabrication manager 116 of FIG. 1, of a fabrication device, such as the fabrication device 102 of FIG. 1) may reduce a layer's height if there are regions in the layer that satisfy certain characteristics, such as those regions having curvature. In FIG. 10, layers are closer together where the slope is below a certain angle and when the slope returns to the certain angle (e.g., steeper), the upper layers revert back to a full layer height.

Computing the layer height might be performed as follows. First, a maximum height (e.g., maxHeight) and a minimum height (e.g., minHeight) are established. The minimum height may be based on a minimum layer height supported by a specific fabrication device's technology. The maximum height may be based on a quality standard selected by a user. As an example, a minimum height may be 0.05 mm for certain fabrication devices and maximum height may be 0.3 mm. One example equation for determining the layer height may be as follows:

layer height=min(max(stepWidth×tan θ,minHeight),maxHeight)

A stepWidth parameter represents a maximum horizontal distance between surface perimeter lines on adjacent layers. In some embodiments, the horizontal distance refers to an extrusion width setting for plastic filament material. θ represents an angle of inclination between two adjacent layers. The layer height may be computed by reducing the stepWidth by a tangent of angle θ, which represents a ratio between the layer height and the extrusion width given the angle θ. For example, if the extrusion width is 0.4 mm, the extrusion width may be modified to 0.6 mm in order to maintain a particular horizontal distance between perimeter lines to be between one (1) to a half (0.5) of the stepWidth. If the layer height exceeds the maximum height parameter, one or more additional layers may be inserted between the two adjacent layers and incorporated into the model data. For example, a layer 1004 ₄ is inserted above layer 1004 ₃ because the horizontal distance (e.g., extrusion width) between the layer 1004 ₃ and a next adjacent layer at a full layer height exceeded the stepWidth parameter. As illustrated, the layer 1004 ₄ has a layer height that is a quarter of the layer 1004 ₃ to maintain the extrusion width under the stepWidth parameter. For each next layer until layer 1004 ₁₅, the layer height is substantially maintained because the angle of inclination remained substantially the same as well. After the layer 1004 ₁₅, the angle of inclination becomes steeper and the extrusion width may fall below the minimum extrusion width, causing the layer height to double to a value used by each next layer until a layer 1004 ₂₁. Similarly, after the layer 1004 ₂₁, the angle of inclination becomes even steeper, causing the layer height to double again to a value used by each next layer until a layer 1004 _(N).

Additional layers also may be inserted, lowering the layer height, when a curvature of the cross-section 1002 falls below a pre-defined angle of inclination. Similarly, the layer height may be increased when the curvature of the cross-section 1002 exceeds the pre-defined angle of inclination. Of course, the layer height may not fall below the minimum height parameter (minHeight). If an angle of inclination or declination is steeper, the layer height may be reduced in proportion to the angle change.

FIG. 11A and FIG. 11B illustrate example layers undergoing extrusion modulation according to at least one example implementation. Each example layer may represent at least a portion of a three-dimensional object's top surface geometry. While each example layer may be illustrated as a horizontal layer partitioned into sub-layers, it is appreciated that in other embodiments, each example layer may represent a portion of the top surface geometry along any plane in three-dimensional space. Therefore, material may be deposited along a three-dimensional path on the object's surface. Each layer below the example layers may include planar regions comprising in-fill regions and non-planar regions comprising a surface perimeter. Each example layer represents a three-dimensional portion of the object upon which material is deposited in sub-layers.

FIG. 11A depicts a layer 1102 in which layer height is modified at different sub-layers when depositing material. Each sub-layer refers to a portion of the layer 1102 upon which a line of material is deposited. Each rectangular box represents a minimum extrusion unit of material capable of being deposited at a given time (e.g., 0.1 millimeters (mm) in height and 0.4 millimeters (mm) in width). FIG. 11A illustrates an extrusion modulation process in which at least a portion the layer 1102 is built using the minimum extrusion unit. As illustrated, an extrusion line of material is deposited in order to build a perimeter for a sub-layer up to a first layer height 1104. Then, two extrusion lines are deposited in order to build a perimeter for a next sub-layer up to a second layer height 1106 (e.g., 0.2 millimeters (mm) in height and 0.4 millimeters (mm) in width). The second layer height 1106 is raised to a third layer height 1108 such that three material extrusions are deposited at locations corresponding to a next sub-layer. By reducing the amount of material being deposited for the first two sub-layers, a more precise object surface curvature may be achieved.

FIG. 11B illustrates an extrusion modulation process in which a layer height may be modified for different sub-layers of a layer 1110 being fabricated. Hence, the process of FIG. 11B does not use the minimum extrusion unit and instead, modulates extrusion height by modifying an amount of material being extruded at certain sub-layers. This may be accomplished by changing an extrusion feed rate and/or speed. In some example embodiments, changing an extrusion material width also modifies the extrusion height and vice versa. For example, the extrusion height may be set to a value no greater than eighty percent of the extrusion material width. The first material deposition of FIG. 11B represents perimeter line extrusions at a layer height 1112 that is a third of a full layer height. A next material deposition represents an additional perimeter extrusion line at a higher layer height 1114. A last material deposition of FIG. 11B represents a normal in-fill extrusion at a normal layer height 1116.

FIG. 12 illustrates example texture for a surface geometry according to at least one example implementation. The example texture may be produced on an object's top surface or a surface perimeter. The example texture's resolution may be set as low as a minimum extrusion width, which may refer to a minimum amount of material an extruder nozzle may deposit at a given time. Therefore, the example texture's pattern 1202 may present fine-grained detail on the surface geometry.

The texture pattern 1202 is produced by varying extrusion material width between little or no material and at least half of a full extrusion material width. This may be achieved by starting and stopping/slowing down a material extrusion process, as described herein, in accordance with the texture pattern 1202. For example, the fabrication device may delay material deposition for a specific length and/or decrease an extruder feed rate. The fabrication device also may speed up the movement of the extruder nozzle until a next position in order to reduce the extrusion width. In order to increase the extrusion width, the fabrication device deposit more materials by increases the extruder feed rate or slowing down the extruder speed.

To illustrate one example, consider the texture pattern 1202 illustrated in FIG. 12. For a bottom ten (10) rows, the fabrication device may deposit material in two millimeter (2 mm) line segments by extruding no material for two (2) mm followed by 2 mm of extrusion at a full material width. For a next ten (10) rows, the fabrication device may extrude a four (4) mm line segment of material following by a one (1) mm line segment. To produce extruder lines of different widths, the fabrication device may delay material extrusion for a specific length and/or speed up the movement of the extruder nozzle until a next position. Furthermore, the fabrication device may, at any time, modify the instructions to extrude lines of material without varying the extrusion width. As demonstrated between the seventh and fifteenth rows of the texture pattern 1202, a rectangle is superimposed on the object surface with no variation in the extruded layers. Similarly, the fabrication device may revert back to varying the extrusion width at any time during the material extrusion process.

FIG. 13 illustrates an example adaptive material width approach on a three-dimensional object according to at least one example implementation. A layer 1302 of the three-dimensional object is partitioned into regions, some of which may be referred to as outline regions, including an exterior/perimeter outline 1304, an inner-most outline 1306, and three intermediary outline regions, including an outline 1308. The outline 1306 is an inner perimeter for an interior hole 1310. The following description is directed towards achieving a complete filling of the layer 1302 by varying an extrusion width for at least some outline regions.

According to at least one example embodiment, a fabrication device (e.g., the fabrication device 102 of FIG. 1) determines a tool path for each outline region. As an example, a curved surface geometry corresponding to the outline 1308 is transformed into a corresponding tool path along the x and y dimensions. Based upon the corresponding tool path, instructions are generated for depositing material on positions along the outline 1308. These instructions may vary an extrusion material width for different portions of the outline region such that certain areas may be prescribed a larger extrusion material width than other areas. While instructions for the outline 1304 may deposit material at a constant width, instructions for each intermediary outline region may define a progressively larger extrusion material width and instructions for the outline 1306 may define a largest extrusion material.

FIG. 14 illustrates another example adaptive material width approach on a three-dimensional object according to at least one example implementation. A tapered object 1402 (e.g., depicted as a single layer cross-section) can be accurately reproduced by dynamically adjusting an extrusion width to match that object's shape. In FIG. 13, each dashed line represents a tool path for depositing material while solid lines denote edges of the deposited material. The solid lines narrow as an extrusion feed rate decreases. By reducing the number of tool paths when the object 1402 becomes too narrow, an extrusion feed rate range also may be reduced by a factor of two (2) in order to reproduce a line of material of any width greater than or equal to a minimum extrusion width.

Example Networked and Distributed Environments

One of ordinary skill in the art can appreciate that the various embodiments and methods described herein can be implemented in connection with any computer or other client or server device, which can be deployed as part of a computer network or in a distributed computing environment, and can be connected to any kind of data store or stores. In this regard, the various embodiments described herein can be implemented in any computer system or environment having any number of memory or storage units, and any number of applications and processes occurring across any number of storage units. This includes, but is not limited to, an environment with server computers and client computers deployed in a network environment or a distributed computing environment, having remote or local storage.

Distributed computing provides sharing of computer resources and services by communicative exchange among computing devices and systems. These resources and services include the exchange of information, cache storage and disk storage for objects, such as files. These resources and services also include the sharing of processing power across multiple processing units for load balancing, expansion of resources, specialization of processing, and the like. Distributed computing takes advantage of network connectivity, allowing clients to leverage their collective power to benefit the entire enterprise. In this regard, a variety of devices may have applications, objects or resources that may participate in the resource management mechanisms as described for various embodiments of the subject disclosure.

FIG. 15 provides a schematic diagram of an example networked or distributed computing environment. The distributed computing environment comprises computing objects 1510, 1512, etc., and computing objects or devices 1520, 1522, 1524, 1526, 1528, etc., which may include programs, methods, data stores, programmable logic, etc. as represented by example applications 1530, 1532, 1534, 1536, 1538. It can be appreciated that computing objects 1510, 1512, etc. and computing objects or devices 1520, 1522, 1524, 1526, 1528, etc. may comprise different devices, such as personal digital assistants (PDAs), audio/video devices, mobile phones, MP3 players, personal computers, laptops, etc.

Each computing object 1510, 1512, etc. and computing objects or devices 1520, 1522, 1524, 1526, 1528, etc. can communicate with one or more other computing objects 1510, 1512, etc. and computing objects or devices 1520, 1522, 1524, 1526, 1528, etc. by way of the communications network 1540, either directly or indirectly. Even though illustrated as a single element in FIG. 15, communications network 1540 may comprise other computing objects and computing devices that provide services to the system of FIG. 15, and/or may represent multiple interconnected networks, which are not shown. Each computing object 1510, 1512, etc. or computing object or device 1520, 1522, 1524, 1526, 1528, etc. can also contain an application, such as applications 1530, 1532, 1534, 1536, 1538, that might make use of an API, or other object, software, firmware and/or hardware, suitable for communication with or implementation of the application provided in accordance with various embodiments of the subject disclosure.

There are a variety of systems, components, and network configurations that support distributed computing environments. For example, computing systems can be connected together by wired or wireless systems, by local networks or widely distributed networks. Currently, many networks are coupled to the Internet, which provides an infrastructure for widely distributed computing and encompasses many different networks, though any network infrastructure can be used for example communications made incident to the systems as described in various embodiments.

Thus, a host of network topologies and network infrastructures, such as client/server, peer-to-peer, or hybrid architectures, can be utilized. The “client” is a member of a class or group that uses the services of another class or group to which it is not related. A client can be a process, e.g., roughly a set of instructions or tasks, that requests a service provided by another program or process. The client process utilizes the requested service without having to “know” any working details about the other program or the service itself.

In a client/server architecture, particularly a networked system, a client is usually a computer that accesses shared network resources provided by another computer, e.g., a server. In the illustration of FIG. 15, as a non-limiting example, computing objects or devices 1520, 1522, 1524, 1526, 1528, etc. can be thought of as clients and computing objects 1510, 1512, etc. can be thought of as servers where computing objects 1510, 1512, etc., acting as servers provide data services, such as receiving data from client computing objects or devices 1520, 1522, 1524, 1526, 1528, etc., storing of data, processing of data, transmitting data to client computing objects or devices 1520, 1522, 1524, 1526, 1528, etc., although any computer can be considered a client, a server, or both, depending on the circumstances. Computing object 1512, for example, acting as a server provides client computing objects or devices 1520, 1522, 1524, 1526, 1528, etc. with access to storage resources within data store(s) 1550.

A server is typically a remote computer system accessible over a remote or local network, such as the Internet or wireless network infrastructures. The client process may be active in a first computer system, and the server process may be active in a second computer system, communicating with one another over a communications medium, thus providing distributed functionality and allowing multiple clients to take advantage of the information-gathering capabilities of the server.

In a network environment in which the communications network 1540 or bus is the Internet, for example, the computing objects 1510, 1512, etc. can be Web servers with which other computing objects or devices 1520, 1522, 1524, 1526, 1528, etc. communicate via any of a number of known protocols, such as the hypertext transfer protocol (HTTP). Computing objects 1510, 1512, etc. acting as servers may also serve as clients, e.g., computing objects or devices 1520, 1522, 1524, 1526, 1528, etc., as may be characteristic of a distributed computing environment.

Example Computing Device

As mentioned, advantageously, the techniques described herein can be applied to any device. It can be understood, therefore, that handheld, portable and other computing devices and computing objects of all kinds are contemplated for use in connection with the various embodiments. Accordingly, the below general purpose remote computer described below in FIG. 16 is but one example of a computing device.

Embodiments can partly be implemented via an operating system, for use by a developer of services for a device or object, and/or included within application software that operates to perform one or more functional aspects of the various embodiments described herein. Software may be described in the general context of computer executable instructions, such as program modules, being executed by one or more computers, such as client workstations, servers or other devices. Those skilled in the art will appreciate that computer systems have a variety of configurations and protocols that can be used to communicate data, and thus, no particular configuration or protocol is considered limiting.

FIG. 16 thus illustrates an example of a suitable computing system environment 1600 in which one or aspects of the embodiments described herein can be implemented, although as made clear above, the computing system environment 1600 is only one example of a suitable computing environment and is not intended to suggest any limitation as to scope of use or functionality. In addition, the computing system environment 1600 is not intended to be interpreted as having any dependency relating to any one or combination of components illustrated in the example computing system environment 1600.

With reference to FIG. 16, an example remote device for implementing one or more embodiments includes a general purpose computing device in the form of a computer 1610. Components of computer 1610 may include, but are not limited to, a processing unit 1620, a system memory 1630, and a system bus 1622 that couples various system components including the system memory to the processing unit 1620.

Computer 1610 typically includes a variety of computer readable media and can be any available media that can be accessed by computer 1610. The system memory 1630 may include computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) and/or random access memory (RAM). By way of example, and not limitation, system memory 1630 may also include an operating system, application programs, other program modules, and program data.

A user can enter commands and information into the computer 1610 through input devices 1640. A monitor or other type of display device is also connected to the system bus 1622 via an interface, such as output interface 1650. In addition to a monitor, computers can also include other peripheral output devices such as speakers and a printer, which may be connected through output interface 1650.

The computer 1610 may operate in a networked or distributed environment using logical connections to one or more other remote computers, such as remote computer 1670. The remote computer 1670 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, or any other remote media consumption or transmission device, and may include any or all of the elements described above relative to the computer 1610. The logical connections depicted in FIG. 16 include a network 1672, such local area network (LAN) or a wide area network (WAN), but may also include other networks/buses. Such networking environments are commonplace in homes, offices, enterprise-wide computer networks, intranets and the Internet.

As mentioned above, while example embodiments have been described in connection with various computing devices and network architectures, the underlying concepts may be applied to any network system and any computing device or system in which it is desirable to improve efficiency of resource usage.

Also, there are multiple ways to implement the same or similar functionality, e.g., an appropriate API, tool kit, driver code, operating system, control, standalone or downloadable software object, etc. which enables applications and services to take advantage of the techniques provided herein. Thus, embodiments herein are contemplated from the standpoint of an API (or other software object), as well as from a software or hardware object that implements one or more embodiments as described herein. Thus, various embodiments described herein can have aspects that are wholly in hardware, partly in hardware and partly in software, as well as in software.

The word “exemplary” is used herein to mean serving as an example, instance, or illustration. For the avoidance of doubt, the subject matter disclosed herein is not limited by such examples. In addition, any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs, nor is it meant to preclude equivalent exemplary structures and techniques known to those of ordinary skill in the art. Furthermore, to the extent that the terms “includes,” “has,” “contains,” and other similar words are used, for the avoidance of doubt, such terms are intended to be inclusive in a manner similar to the term “comprising” as an open transition word without precluding any additional or other elements when employed in a claim.

As mentioned, the various techniques described herein may be implemented in connection with hardware or software or, where appropriate, with a combination of both. As used herein, the terms “component,” “module,” “system” and the like are likewise intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on computer and the computer can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.

The aforementioned systems have been described with respect to interaction between several components. It can be appreciated that such systems and components can include those components or specified sub-components, some of the specified components or sub-components, and/or additional components, and according to various permutations and combinations of the foregoing. Sub-components can also be implemented as components communicatively coupled to other components rather than included within parent components (hierarchical). Additionally, it can be noted that one or more components may be combined into a single component providing aggregate functionality or divided into several separate sub-components, and that any one or more middle layers, such as a management layer, may be provided to communicatively couple to such sub-components in order to provide integrated functionality. Any components described herein may also interact with one or more other components not specifically described herein but generally known by those of skill in the art.

In view of the example systems described herein, methodologies that may be implemented in accordance with the described subject matter can also be appreciated with reference to the flowcharts of the various figures. While for purposes of simplicity of explanation, the methodologies are shown and described as a series of blocks, it is to be understood and appreciated that the various embodiments are not limited by the order of the blocks, as some blocks may occur in different orders and/or concurrently with other blocks from what is depicted and described herein. Where non-sequential, or branched, flow is illustrated via flowchart, it can be appreciated that various other branches, flow paths, and orders of the blocks, may be implemented which achieve the same or a similar result. Moreover, some illustrated blocks are optional in implementing the methodologies described hereinafter.

CONCLUSION

While the invention is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of the invention.

In addition to the various embodiments described herein, it is to be understood that other similar embodiments can be used or modifications and additions can be made to the described embodiment(s) for performing the same or equivalent function of the corresponding embodiment(s) without deviating therefrom. Still further, multiple processing chips or multiple devices can share the performance of one or more functions described herein, and similarly, storage can be effected across a plurality of devices. Accordingly, the invention is not to be limited to any single embodiment, but rather is to be construed in breadth, spirit and scope in accordance with the appended claims. 

What is claimed is:
 1. In a computing environment, a method performed at least in part on at least one processor, comprising, adapting a three-dimensional model to surface geometry when fabricating a three-dimensional object, including, processing model data defining planar regions and non-planar regions of the three-dimensional object, generating an instruction set that comprises instructions corresponding to the non-planar regions, and generating other instructions for the instruction set that correspond to the planar regions.
 2. The method of claim 1, wherein generating the instruction set further comprises generating instructions corresponding to three-dimensional movement of an extruder nozzle.
 3. The method of claim 1 further comprising modifying the model data associated with the non-planar regions.
 4. The method of claim 3, wherein modifying the model data further comprises modifying a layer height based upon a curvature of the non-planar regions.
 5. The method of claim 3, wherein modifying the model data further comprises modifying a layer height for a portion of a layer.
 6. The method of claim 1, wherein generating the instruction set further comprises modifying at least one of a width, a thickness or a length of deposited material.
 7. The method of claim 1, wherein generating the instruction set further comprises varying material width to produce texture on a surface.
 8. The method of claim 1, wherein generating the instruction set further comprises modifying a material height along tool paths outlining the three-dimensional object.
 9. The method of claim 1, wherein modifying the model data further comprises rotating the model data of the non-planar regions along an axis, generating three-dimensional paths for the non-planar regions, and rotating the model data back along the axis.
 10. In a computing environment, a system, comprising, a fabrication device configured to deposit material for producing a three-dimensional object, and a fabrication manager configured to identify a portion of curved surface geometry associated with the three-dimensional object, modify instructions for depositing material along at least one dimension on the portion of the curved surface geometry, and instruct the fabrication device to fabricate the three-dimensional object.
 11. The system of claim 10, wherein the fabrication manager is further configured to modify a material width along tool paths between an interior and exterior outline.
 12. The system of claim 10, wherein the fabrication manager is further configured to modify model data corresponding to the portion of the curved surface geometry, and to generate an instruction set that when executed, modulates material deposition on the portion of the curved surface geometry.
 13. The system of claim 10, wherein the fabrication manager is further configured to define a three-dimensional path for depositing material on the portion of the curved surface geometry, and to generate instructions corresponding to the three-dimensional path, and wherein the fabrication device comprises a controller configured to execute the instructions, causing three-dimensional movement of at least one of a tool head or a movable platform.
 14. The system of claim 13, wherein the fabrication device comprises a robot configured to actuate an extruder nozzle along the three-dimensional path.
 15. The system of claim 10, wherein the fabrication manager is further configured to partition the curved surface geometry into cross-sections along at least one of an x-axis or a y-axis.
 16. The system of claim 15, wherein the fabrication manager is further configured to rotate a cross-section along at least one of an x-dimension, a y-dimension, or a z-dimension, and generate instructions for depositing material on a non-planar region of the cross-section.
 17. The system of claim 11, wherein the fabrication manager is further configured to remove non-planar regions of the curved surface geometry from the model data, to generate a set of instructions for fabricating other regions of the three-dimensional object, and to generate another set of instructions for fabricating the non-planar regions.
 18. One or more computer-readable media having computer-executable instructions, which when executed perform steps, comprising: partitioning model data corresponding to a three-dimensional object into layers along a dimension in which at least one layer defines a surface geometry; mapping at least one texture pattern to the surface geometry; and modifying material deposition based upon the mapping of the at least one texture pattern to the surface geometry.
 19. The one or more computer-readable media of claim 18 having further computer-executable instructions, which when executed perform steps, comprising: modifying at least one of a material thickness or a material width when depositing material on a surface of the three-dimensional object.
 20. The one or more computer-readable media of claim 18 having further computer-executable instructions, which when executed perform steps, comprising: determining an extrusion speed and an extrusion feed rate based upon the model data. 